package stream;



import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.function.IntFunction;

/**
 * @author wang'ji'cheng
 * @date 2025/7/19
 */
public class Demo4 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "张三", "张三", "张三", "李四", "王五", "张无忌", "张三丰");
        long count = list.stream().count();
        System.out.println(count);
        /*转成数组
        toArray方法的参数，new IntFunction<String[]>() {
                    @Override
                    public String[] apply(int value) {
                        return new String[value];
                    }
                }这个参数是一个匿名内部类，作用是创建一个指定类型的，制定长度的数组，这个匿名内部类有一个apply方法
                ，方法的参数是数组的长度，返回值是对应类型对应长度的数组。toArray方法的底层会以此得到流中的每一个数据
                并把数据放到数组里，最终返回这个存着流中数据的数组。*/
        String[] array = list.stream().toArray(new IntFunction<String[]>() {
            @Override
            public String[] apply(int value) {
                return new String[value];
            }
        });
        System.out.println(Arrays.toString(array));
        System.out.println("===================================");

        String[] array1 = list.stream().toArray(value -> new String[value]);
        System.out.println(Arrays.toString(array1));
    }
}
